// 导入数据库操作模块
const db = require('../db')
// 导入处理密码的模块
const bcrypt = require('bcryptjs')
// 导入工具模块
const {dbQuery,getCurrentTime} = require('../utils')

// 获取用户基本信息的处理函数
exports.getUserInfo = async (req, res) => {
    const u = await dbQuery('select * from ev_users where id= ?', req.user.id)
    if (!u || u.length !== 1){
        return res.sendJson('当前用户不存在')
    }
    // 用户信息获取成功
    return res.sendJson('获取用户信息成功', 0, u[0])
}

// 更新用户基本信息的处理函数
exports.updateUserInfo = async (req, res) => {
    req.body['update_at'] = getCurrentTime()
    console.log('updateUserInfo', req.body,req.user.id)
    const u = await dbQuery('update ev_users set ? where id= ?', [req.body, req.user.id])
    if (!u || u.affectedRows !== 1){
        return req.sendJson('更新用户信息失败！')
    }
    res.sendJson('更新用户信息成功！', 0)

}

// 更新用户密码的处理函数
exports.updatePassword = async (req, res) => {
    const u = await dbQuery('select * from ev_users where id= ?', req.user.id)
    if (!u || u.length !== 1){
        return res.sendJson('当前用户不存在')
    }
    // 判断密码是否正确
    const compareResult = bcrypt.compareSync(req.body.oldPwd, u[0].password)
    if ( ! compareResult){
        return res.sendJson('旧密码错误！')
    }
    const newPwd = bcrypt.hashSync(req.body.newPwd, 10)
    const ud = {password:newPwd, update_at:getCurrentTime()}
    const u2 = await dbQuery('update ev_users set ? where id= ?', [ud, req.user.id])
    if (!u2 || u2.affectedRows !== 1){
        return req.sendJson('更新密码失败！')
    }
    res.sendJson('更新用户密码成功！', 0)
}

// 更新用户头像的处理函数
exports.updateAvatar = async (req, res) => {
    const ud = {avatar:req.body.avatar, update_at:getCurrentTime()}
    const u = await dbQuery('update ev_users set ? where id= ?', [ud, req.user.id])
    if (!u || u.affectedRows !== 1){
        return req.sendJson('更新用户头像失败！')
    }
    res.sendJson('更新用户头像成功！', 0)
}
